﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HomeCare.Model;
using HomeCare.Control;

namespace HomeCare.View
{
    public partial class PesquisarAgenda : Form
    {
        int id;
        private String acao = String.Empty;

        AgendaControl agendaControl = new AgendaControl();

        public PesquisarAgenda()
        {
            InitializeComponent();
        }

        private void btnIncluir_Click(object sender, EventArgs e)
        {
            CadastroAgenda cadastro = new CadastroAgenda();
            cadastro.Show();
        }

        CadastroAgenda myParent = null;

        public PesquisarAgenda(CadastroAgenda myParent)
        {
            InitializeComponent();
            this.myParent = myParent;
            dgvPacientes.Enabled = false;
            //Verificar se já existe uma tela de consulta ja aberta.
        }

        private void PesquisarAgenda_Load(object sender, EventArgs e)
        {
            CarregaComboFuncionario();
        }

        public void CarregaComboFuncionario()
        {
            List<Pessoa> funcionarios = PessoaControl.GetFuncionarios();
            cmbFuncionarios.DisplayMember = "nome";
            cmbFuncionarios.ValueMember = "id";
            cmbFuncionarios.DataSource = funcionarios;
        }

        private void btnConsultar_Click(object sender, EventArgs e)
        {
            String msg = validaConsulta();

            if (String.IsNullOrEmpty(msg))
            {
                Agenda agenda = new Agenda();
                agenda.DataInicial = dtpInicial.Value;
                agenda.DataFinal = dtpFinal.Value;
                agenda.IdFuncionario = Convert.ToInt32(cmbFuncionarios.SelectedValue);
                //dgvPacientes.AutoGenerateColumns = true;
                DataSet ds = agendaControl.PesquisaAgenda(agenda);

                dgvPacientes.ReadOnly = true;
                dgvPacientes.MultiSelect = false;
                DataTable table = ds.Tables[0];

                if (ds.Tables[0].Rows.Count > 0)
                {
                    int row = ds.Tables[0].Rows.Count - 1;
                    for (int r = 0; r <= row; r++)
                    {
                        dgvPacientes.Rows.Add();
                        DateTime dataInicial = (DateTime)ds.Tables[0].Rows[r].ItemArray[0];
                        DateTime dataFinal = (DateTime)ds.Tables[0].Rows[r].ItemArray[1];
                        dgvPacientes.Rows[r].Cells[0].Value = dataInicial.ToString("dd/MM/yy HH:MM");
                        dgvPacientes.Rows[r].Cells[1].Value = dataFinal.ToString("dd/MM/yy HH:MM");
                        dgvPacientes.Rows[r].Cells[2].Value = ds.Tables[0].Rows[r].ItemArray[2];
                        StringBuilder sb = new StringBuilder();
                        sb.AppendLine(ds.Tables[0].Rows[r].ItemArray[3].ToString() + ", ");
                        sb.AppendLine(ds.Tables[0].Rows[r].ItemArray[4].ToString() + ", ");
                        sb.AppendLine(ds.Tables[0].Rows[r].ItemArray[5].ToString() + ", ");
                        sb.AppendLine(ds.Tables[0].Rows[r].ItemArray[6].ToString());
                        dgvPacientes.Rows[r].Cells[3].Value = sb.ToString();
                        dgvPacientes.Rows[r].Cells[4].Value = ds.Tables[0].Rows[r].ItemArray[7].ToString();
                        dgvPacientes.Rows[r].Cells[5].Value = ds.Tables[0].Rows[r].ItemArray[8].ToString();
                        dgvPacientes.Rows[r].Cells[6].Value = ds.Tables[0].Rows[r].ItemArray[9].ToString();
                    }
                }
                else
                {
                    MessageBox.Show("Nenhum registro encontrado.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else
            {
                MessageBox.Show(msg, "Erro de Consulta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        public String validaConsulta()
        {
            String msg = String.Empty;
            if (cmbFuncionarios.SelectedIndex == 0)
                msg += "Por favor selecione um funcionário.\n";
            if (dtpInicial.Value > dtpFinal.Value)
                msg += "Data Inicial menor que a Data Final.\n";

            return msg;
        }

        private void dgvPacientes_DoubleClick(object sender, EventArgs e)
        {
            Agenda agenda = new Agenda();
            agenda.DataInicial = DateTime.Parse(dgvPacientes.SelectedRows[0].Cells[0].Value.ToString());
            agenda.DataFinal = DateTime.Parse(dgvPacientes.SelectedRows[0].Cells[1].Value.ToString());
            agenda.Id = Convert.ToInt32(dgvPacientes.SelectedRows[0].Cells[6].Value);
            agenda.IdPaciente = Convert.ToInt32(dgvPacientes.SelectedRows[0].Cells[4].Value);
            agenda.IdFuncionario = Convert.ToInt32(dgvPacientes.SelectedRows[0].Cells[5].Value);
            myParent = new CadastroAgenda();
            myParent.RecebeAgenda(agenda);
            Close();
           // myParent.Show();
        }

        private void btnImprimir_Click(object sender, EventArgs e)
        {
            if (dgvPacientes.Rows.Count > 0)
            {
                Pessoa pessoa = (Pessoa)cmbFuncionarios.SelectedItem;
                PrintDGV.Print_DataGridView(dgvPacientes, "Funcionário: " + pessoa.nome);
            }
        }

        

        

        
    }
}
